#include <func.h>
#define N 100000000
int main(int argc,char *argv[])
{
    int shmid;//存储创建的共享内存id
    shmid=shmget(1000,4096,IPC_CREAT|0600);
    ERROR_CHECK(shmid,-1,"shmget");
    printf("shmget success shmid=%d\n",shmid);
    int *p=(int*)shmat(shmid,NULL,0);
    ERROR_CHECK(p,(int*)-1,"shmat");
    p[0]=0;
    int i;
    if(!fork())
    {
        for(i=0;i<N;++i)
        {
            p[0]=p[0]+1;//p[0]=p[0]+1;不是原子操作
            //用信号量来保护共享内存的互斥访问
        }
        exit(0);
    }else{
        for(i=0;i<N;++i)
        {
            p[0]=p[0]+1;
        }
        wait(NULL);
        printf("result=%d\n",p[0]);
        printf("Programme over!\n");
    }
    return 0;
}

